package cn.wch.blelib.host.gattNameResolver;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

/**
 * Gatt特类型
 */
public class GATT_Characteristic {
    private static final String ZERO="0000";
    private static final String UUID_TAIL="-0000-1000-8000-00805f9b34fb";
    private static Map<String, GATT_uuidNmae> mCharacteristics = new HashMap<>();

    public static GATT_uuidNmae getCharacteristicName(UUID uuid){
        return getCharacteristicName(uuid.toString().toLowerCase());
    }
    /**
     * 获取特征名称
     * @param uuid 特征UUID。可以是:'0000xxxx','xxxx'或‘0000xxxx-0000-1000-8000-00805f9b34fb’
     * @return
     */
    static public GATT_uuidNmae getCharacteristicName(final String uuid){
        GATT_uuidNmae result=null;
        if(uuid.length()==4){
             result = mCharacteristics.get(ZERO+uuid.toLowerCase()+UUID_TAIL);
        }else if(uuid.length()==8){
            result = mCharacteristics.get(uuid.toLowerCase()+UUID_TAIL);
        }else if(uuid.length()==(8+UUID_TAIL.length())){
            result = mCharacteristics.get(uuid.toLowerCase());
        }
        if(result == null) result = new GATT_uuidNmae("Unknown Characteristic","未知特征");
        return result;
    }
    static {
        mCharacteristics.put(ZERO+"2a00"+UUID_TAIL, new GATT_uuidNmae("Device Name","设备名称"));
        mCharacteristics.put(ZERO+"2a01"+UUID_TAIL, new GATT_uuidNmae("Appearance","外观"));
        mCharacteristics.put(ZERO+"2a02"+UUID_TAIL, new GATT_uuidNmae("Peripheral Privacy Flag","周边隐私标志"));
        mCharacteristics.put(ZERO+"2a03"+UUID_TAIL, new GATT_uuidNmae("Reconnection Address","重新连接地址"));
        mCharacteristics.put(ZERO+"2a04"+UUID_TAIL, new GATT_uuidNmae("Peripheral Preferred Connection Parameters"," 外围设备首选连接参数"));
        mCharacteristics.put(ZERO+"2a05"+UUID_TAIL, new GATT_uuidNmae("Service Changed","服务已更改"));
        mCharacteristics.put(ZERO+"2a06"+UUID_TAIL, new GATT_uuidNmae("Alert Level","报警等级"));
        mCharacteristics.put(ZERO+"2a07"+UUID_TAIL, new GATT_uuidNmae("Tx Power Level","传输功率电平"));
        mCharacteristics.put(ZERO+"2a08"+UUID_TAIL, new GATT_uuidNmae("Date Time","日期时间"));
        mCharacteristics.put(ZERO+"2a09"+UUID_TAIL, new GATT_uuidNmae("Day of Week","星期几"));
        mCharacteristics.put(ZERO+"2a0a"+UUID_TAIL, new GATT_uuidNmae("Day Date Time","日期时间天"));
        mCharacteristics.put(ZERO+"2a0b"+UUID_TAIL, new GATT_uuidNmae("Exact Time 100","具体时间100"));
        mCharacteristics.put(ZERO+"2a0c"+UUID_TAIL, new GATT_uuidNmae("Exact Time 256","具体时间256"));
        mCharacteristics.put(ZERO+"2a0d"+UUID_TAIL, new GATT_uuidNmae("DST Offset","日光节约时间（夏令时）偏移"));
        mCharacteristics.put(ZERO+"2a0e"+UUID_TAIL, new GATT_uuidNmae("Time Zone","时区"));
        mCharacteristics.put(ZERO+"2a0f"+UUID_TAIL, new GATT_uuidNmae("Local Time Information","当地时间信息"));
        mCharacteristics.put(ZERO+"2a10"+UUID_TAIL, new GATT_uuidNmae("Secondary Time Zone","次要时区"));
        mCharacteristics.put(ZERO+"2a11"+UUID_TAIL, new GATT_uuidNmae("Time with DST","DST时间"));
        mCharacteristics.put(ZERO+"2a12"+UUID_TAIL, new GATT_uuidNmae("Time Accuracy","时间精度"));
        mCharacteristics.put(ZERO+"2a13"+UUID_TAIL, new GATT_uuidNmae("Time Source","时间来源"));
        mCharacteristics.put(ZERO+"2a14"+UUID_TAIL, new GATT_uuidNmae("Reference Time Information","参考时间信息"));
        mCharacteristics.put( ZERO+"2A15"+UUID_TAIL, new GATT_uuidNmae("Time Broadcast","时间广播"));
        mCharacteristics.put(ZERO+"2a16"+UUID_TAIL, new GATT_uuidNmae("Time Update Control Point","时间更新控制点"));
        mCharacteristics.put(ZERO+"2a17"+UUID_TAIL, new GATT_uuidNmae("Time Update State","时间更新状态"));
        mCharacteristics.put(ZERO+"2a18"+UUID_TAIL, new GATT_uuidNmae("Glucose Measurement","血糖仪测量"));
        mCharacteristics.put(ZERO+"2a19"+UUID_TAIL, new GATT_uuidNmae("Battery Level","电池电量"));
        mCharacteristics.put(ZERO+"2a1a"+UUID_TAIL, new GATT_uuidNmae("Battery Power State","电池电源状态"));
        mCharacteristics.put(ZERO+"2a1b"+UUID_TAIL, new GATT_uuidNmae("Battery Level State","电池电量状态"));
        mCharacteristics.put(ZERO+"2a1c"+UUID_TAIL, new GATT_uuidNmae("Temperature Measurement","温度测量"));
        mCharacteristics.put(ZERO+"2a1d"+UUID_TAIL, new GATT_uuidNmae("Temperature Type","温度类型"));
        mCharacteristics.put(ZERO+"2a1e"+UUID_TAIL, new GATT_uuidNmae("Intermediate Temperature","中间的温度"));
        mCharacteristics.put( ZERO+"2A1F"+UUID_TAIL, new GATT_uuidNmae("Temperature Celsius","温度摄氏"));
        mCharacteristics.put( ZERO+"2A20"+UUID_TAIL, new GATT_uuidNmae("Temperature Fahrenheit","温度华氏度"));
        mCharacteristics.put(ZERO+"2a21"+UUID_TAIL, new GATT_uuidNmae("Measurement Interval","测量间隔"));
        mCharacteristics.put(ZERO+"2a22"+UUID_TAIL, new GATT_uuidNmae("Boot Keyboard Input Report","启动键盘输入报告"));
        mCharacteristics.put(ZERO+"2a23"+UUID_TAIL, new GATT_uuidNmae("System ID","系统编号"));
        mCharacteristics.put(ZERO+"2a24"+UUID_TAIL, new GATT_uuidNmae("Model Number String","型号字符"));
        mCharacteristics.put(ZERO+"2a25"+UUID_TAIL, new GATT_uuidNmae("Serial Number String","序列号字符"));
        mCharacteristics.put(ZERO+"2a26"+UUID_TAIL, new GATT_uuidNmae("Firmware Revision String","固件修订字符"));
        mCharacteristics.put(ZERO+"2a27"+UUID_TAIL, new GATT_uuidNmae("Hardware Revision String","硬件修订字符"));
        mCharacteristics.put(ZERO+"2a28"+UUID_TAIL, new GATT_uuidNmae("Software Revision String","软件修订版字符"));
        mCharacteristics.put(ZERO+"2a29"+UUID_TAIL, new GATT_uuidNmae("Manufacturer Name String"," 制造商名称字符"));
        mCharacteristics.put(ZERO+"2a2a"+UUID_TAIL, new GATT_uuidNmae("IEEE 11073-20601 Regulatory Certification Data List","IEEE 11073-20601法规认证数据列表"));
        mCharacteristics.put(ZERO+"2a2b"+UUID_TAIL, new GATT_uuidNmae("Current Time","当前时间"));
        mCharacteristics.put(ZERO+"2a2c"+UUID_TAIL, new GATT_uuidNmae("Magnetic Declination","磁偏角"));
        mCharacteristics.put(ZERO+"2a2f"+UUID_TAIL, new GATT_uuidNmae("Position 2D","位置2D"));
        mCharacteristics.put(ZERO+"2a30"+UUID_TAIL, new GATT_uuidNmae("Position 3D","位置3D"));
        mCharacteristics.put(ZERO+"2a31"+UUID_TAIL, new GATT_uuidNmae("Scan Refresh","扫描刷新"));
        mCharacteristics.put(ZERO+"2a32"+UUID_TAIL, new GATT_uuidNmae("Boot Keyboard Output Report","启动键盘输出报告"));
        mCharacteristics.put(ZERO+"2a33"+UUID_TAIL, new GATT_uuidNmae("Boot Mouse Input Report","启动鼠标输入报告"));
        mCharacteristics.put(ZERO+"2a34"+UUID_TAIL, new GATT_uuidNmae("Glucose Measurement Context","血糖仪测量环境"));
        mCharacteristics.put(ZERO+"2a35"+UUID_TAIL, new GATT_uuidNmae("Blood Pressure Measurement","血压测量"));
        mCharacteristics.put(ZERO+"2a36"+UUID_TAIL, new GATT_uuidNmae("Intermediate Cuff Pressure","中间的气囊压力"));
        mCharacteristics.put(ZERO+"2a37"+UUID_TAIL, new GATT_uuidNmae("Heart Rate Measurement","心率测量"));
        mCharacteristics.put(ZERO+"2a38"+UUID_TAIL, new GATT_uuidNmae("Body Sensor Location","人体感应器位置"));
        mCharacteristics.put(ZERO+"2a39"+UUID_TAIL, new GATT_uuidNmae("Heart Rate Control Point","心率控制点"));
        mCharacteristics.put(ZERO+"2a3b"+UUID_TAIL, new GATT_uuidNmae("Service Required","所需服务"));
        mCharacteristics.put(ZERO+"2a3c"+UUID_TAIL, new GATT_uuidNmae("Scientific Temperature Celsius","科学温度（摄氏度）"));
        mCharacteristics.put( ZERO+"2A3D"+UUID_TAIL, new GATT_uuidNmae("String","字符串"));
        mCharacteristics.put(ZERO+"2a3e"+UUID_TAIL, new GATT_uuidNmae("Network Availability","网络可用性"));
        mCharacteristics.put(ZERO+"2a3f"+UUID_TAIL, new GATT_uuidNmae( "Alert Status","报警状态"));
        mCharacteristics.put(ZERO+"2a40"+UUID_TAIL, new GATT_uuidNmae("Ringer Control Point"," 铃声控制点"));
        mCharacteristics.put(ZERO+"2a41"+UUID_TAIL, new GATT_uuidNmae("Ringer Setting","铃声设置"));
        mCharacteristics.put(ZERO+"2a42"+UUID_TAIL, new GATT_uuidNmae("Alert Category ID Bit Mask","报警类别ID位掩码"));
        mCharacteristics.put(ZERO+"2a43"+UUID_TAIL, new GATT_uuidNmae("Alert Category ID","报警类别ID"));
        mCharacteristics.put(ZERO+"2a44"+UUID_TAIL, new GATT_uuidNmae("Alert Notification Control Point","报警通知控制点"));
        mCharacteristics.put(ZERO+"2a45"+UUID_TAIL, new GATT_uuidNmae("Unread Alert Status","未读警报状态"));
        mCharacteristics.put(ZERO+"2a46"+UUID_TAIL, new GATT_uuidNmae("New Alert","新警报"));
        mCharacteristics.put(ZERO+"2a47"+UUID_TAIL, new GATT_uuidNmae("Supported New Alert Category","支持的新警报类别"));
        mCharacteristics.put(ZERO+"2a48"+UUID_TAIL, new GATT_uuidNmae("Supported Unread Alert Category","支持的未读警报类别"));
        mCharacteristics.put(ZERO+"2a49"+UUID_TAIL, new GATT_uuidNmae("Blood Pressure Feature","血压功能"));
        mCharacteristics.put(ZERO+"2a4a"+UUID_TAIL, new GATT_uuidNmae("HID Information","HID信息"));
        mCharacteristics.put(ZERO+"2a4d"+UUID_TAIL, new GATT_uuidNmae("Report","报告"));
        mCharacteristics.put(ZERO+"2a4c"+UUID_TAIL, new GATT_uuidNmae("HID Control Point","HID控制点"));
        mCharacteristics.put(ZERO+"2a4b"+UUID_TAIL, new GATT_uuidNmae("Report Map","报告地图"));
        mCharacteristics.put(ZERO+"2a4e"+UUID_TAIL, new GATT_uuidNmae("Protocol Mode","协议模式"));
        mCharacteristics.put(ZERO+"2a4f"+UUID_TAIL, new GATT_uuidNmae("Scan Interval Window","扫描间隔视窗"));
        mCharacteristics.put(ZERO+"2a50"+UUID_TAIL, new GATT_uuidNmae("PnP ID","即插即用ID"));
        mCharacteristics.put(ZERO+"2a51"+UUID_TAIL, new GATT_uuidNmae("Glucose Feature","血糖仪特征"));
        mCharacteristics.put(ZERO+"2a52"+UUID_TAIL, new GATT_uuidNmae("Record Access Control Point","记录访问控制点"));
        mCharacteristics.put(ZERO+"2a53"+UUID_TAIL, new GATT_uuidNmae("RSC Measurement","RSC测量"));
        mCharacteristics.put(ZERO+"2a54"+UUID_TAIL, new GATT_uuidNmae("RSC Feature","RSC功能"));
        mCharacteristics.put(ZERO+"2a55"+UUID_TAIL, new GATT_uuidNmae("SC Control Point","SC控制点"));
        mCharacteristics.put(ZERO+"2a56"+UUID_TAIL, new GATT_uuidNmae("Digital","数字"));
        mCharacteristics.put(ZERO+"2a57"+UUID_TAIL, new GATT_uuidNmae("Digital Output","数字输出"));
        mCharacteristics.put(ZERO+"2a58"+UUID_TAIL, new GATT_uuidNmae("Analog","模拟"));
        mCharacteristics.put(ZERO+"2a59"+UUID_TAIL, new GATT_uuidNmae("Analog Output","模拟输出"));
        mCharacteristics.put(ZERO+"2a5a"+UUID_TAIL, new GATT_uuidNmae("Aggregate","年龄"));
        mCharacteristics.put(ZERO+"2a5b"+UUID_TAIL, new GATT_uuidNmae("CSC Measurement","CSC测量"));
        mCharacteristics.put(ZERO+"2a5c"+UUID_TAIL, new GATT_uuidNmae("CSC Feature","CSC功能"));
        mCharacteristics.put(ZERO+"2a5d"+UUID_TAIL, new GATT_uuidNmae("Sensor Location","传感器位置"));
        mCharacteristics.put(ZERO+"2a5e"+UUID_TAIL, new GATT_uuidNmae("PLX Spot-Check Measurement","PLX抽查检查"));
        mCharacteristics.put(ZERO+"2a5f"+UUID_TAIL, new GATT_uuidNmae("PLX Continuous Measurement Characteristic","PLX连续测量特性"));
        mCharacteristics.put(ZERO+"2a60"+UUID_TAIL, new GATT_uuidNmae("PLX Features","PLX功能"));
        mCharacteristics.put(ZERO+"2a62"+UUID_TAIL, new GATT_uuidNmae("Pulse Oximetry Control Point","脉搏血氧饱和度控制点"));
        mCharacteristics.put(ZERO+"2a63"+UUID_TAIL, new GATT_uuidNmae("Cycling Power Measurement","骑行能量测量"));
        mCharacteristics.put(ZERO+"2a64"+UUID_TAIL, new GATT_uuidNmae("Cycling Power Vector","骑行能量矢量"));
        mCharacteristics.put(ZERO+"2a65"+UUID_TAIL, new GATT_uuidNmae("Cycling Power Feature","骑行能量功能"));
        mCharacteristics.put(ZERO+"2a66"+UUID_TAIL, new GATT_uuidNmae("Cycling Power Control Point","骑行能量控制点"));
        mCharacteristics.put(ZERO+"2a67"+UUID_TAIL, new GATT_uuidNmae("Location and Speed","位置和速度特征"));
        mCharacteristics.put(ZERO+"2a68"+UUID_TAIL, new GATT_uuidNmae("Navigation","导航"));
        mCharacteristics.put(ZERO+"2a69"+UUID_TAIL, new GATT_uuidNmae("Position Quality","位置质量"));
        mCharacteristics.put(ZERO+"2a6a"+UUID_TAIL, new GATT_uuidNmae("LN Feature","LN功能"));
        mCharacteristics.put(ZERO+"2a6b"+UUID_TAIL, new GATT_uuidNmae("LN Control Point","LN控制点"));
        mCharacteristics.put(ZERO+"2a6c"+UUID_TAIL, new GATT_uuidNmae("Elevation","海拔"));
        mCharacteristics.put(ZERO+"2a6d"+UUID_TAIL, new GATT_uuidNmae("Pressure","压力"));
        mCharacteristics.put(ZERO+"2a6e"+UUID_TAIL, new GATT_uuidNmae("Temperature","温度"));
        mCharacteristics.put(ZERO+"2a6f"+UUID_TAIL, new GATT_uuidNmae("Humidity","湿度"));
        mCharacteristics.put(ZERO+"2a70"+UUID_TAIL, new GATT_uuidNmae("True Wind Speed","真风速"));
        mCharacteristics.put(ZERO+"2a71"+UUID_TAIL, new GATT_uuidNmae("True Wind Direction","真风向"));
        mCharacteristics.put(ZERO+"2a72"+UUID_TAIL, new GATT_uuidNmae("Apparent Wind Speed","视风速"));
        mCharacteristics.put(ZERO+"2a73"+UUID_TAIL, new GATT_uuidNmae("Apparent Wind Direction","视风向"));
        mCharacteristics.put(ZERO+"2a74"+UUID_TAIL, new GATT_uuidNmae("Gust Factor","阵风系数"));
        mCharacteristics.put(ZERO+"2a75"+UUID_TAIL, new GATT_uuidNmae("Pollen Concentration","花粉浓度"));
        mCharacteristics.put(ZERO+"2a76"+UUID_TAIL, new GATT_uuidNmae("UV Index","紫外线指数"));
        mCharacteristics.put(ZERO+"2a77"+UUID_TAIL, new GATT_uuidNmae("Irradiance","辐照度"));
        mCharacteristics.put(ZERO+"2a78"+UUID_TAIL, new GATT_uuidNmae("Rainfall","雨量"));
        mCharacteristics.put(ZERO+"2a79"+UUID_TAIL, new GATT_uuidNmae("Wind Chill","风寒（系数吧）"));
        mCharacteristics.put(ZERO+"2a7a"+UUID_TAIL, new GATT_uuidNmae("Heat Index","热度指数"));
        mCharacteristics.put(ZERO+"2a7b"+UUID_TAIL, new GATT_uuidNmae("Dew Point","露点温度"));
        mCharacteristics.put(ZERO+"2a7d"+UUID_TAIL, new GATT_uuidNmae("Descriptor Value Changed","描述符值已更改"));
        mCharacteristics.put(ZERO+"2a7e"+UUID_TAIL, new GATT_uuidNmae("Aerobic Heart Rate Lower Limit","有氧心律下限"));
        mCharacteristics.put(ZERO+"2a7f"+UUID_TAIL, new GATT_uuidNmae("Aerobic Threshold","有氧运动阈值"));
        mCharacteristics.put(ZERO+"2a80"+UUID_TAIL, new GATT_uuidNmae("Age","年龄"));
        mCharacteristics.put(ZERO+"2a81"+UUID_TAIL, new GATT_uuidNmae("Anaerobic Heart Rate Lower Limit","无氧心率下限"));
        mCharacteristics.put(ZERO+"2a82"+UUID_TAIL, new GATT_uuidNmae("Anaerobic Heart Rate Upper Limit","无氧心率上限"));
        mCharacteristics.put(ZERO+"2a83"+UUID_TAIL, new GATT_uuidNmae("Anaerobic Threshold","无氧运动阈值"));
        mCharacteristics.put(ZERO+"2a84"+UUID_TAIL, new GATT_uuidNmae("Aerobic Heart Rate Upper Limit","有氧心率上限"));
        mCharacteristics.put(ZERO+"2a85"+UUID_TAIL, new GATT_uuidNmae("Date of Birth","出生日期"));
        mCharacteristics.put(ZERO+"2a86"+UUID_TAIL, new GATT_uuidNmae("Date of Threshold Assessment","阈值评估日期"));
        mCharacteristics.put(ZERO+"2a87"+UUID_TAIL, new GATT_uuidNmae("Email Address","电子邮件地址"));
        mCharacteristics.put(ZERO+"2a88"+UUID_TAIL, new GATT_uuidNmae("Fat Burn Heart Rate Lower Limit","脂肪燃烧心率下限"));
        mCharacteristics.put(ZERO+"2a89"+UUID_TAIL, new GATT_uuidNmae("Fat Burn Heart Rate Upper Limit","脂肪燃烧心率上限"));
        mCharacteristics.put(ZERO+"2a8a"+UUID_TAIL, new GATT_uuidNmae("First Name","名字（西方人名的第一个字）"));
        mCharacteristics.put(ZERO+"2a8b"+UUID_TAIL, new GATT_uuidNmae("Five Zone Heart Rate Limits","五区心率限制"));
        mCharacteristics.put(ZERO+"2a8c"+UUID_TAIL, new GATT_uuidNmae("Gender","性别"));
        mCharacteristics.put(ZERO+"2a8d"+UUID_TAIL, new GATT_uuidNmae("Heart Rate Max","最大心率"));
        mCharacteristics.put(ZERO+"2a8e"+UUID_TAIL, new GATT_uuidNmae("Height","高度"));
        mCharacteristics.put(ZERO+"2a8f"+UUID_TAIL, new GATT_uuidNmae("Hip Circumference","臀围"));
        mCharacteristics.put(ZERO+"2a90"+UUID_TAIL, new GATT_uuidNmae("Last Name","姓（西方人名的第二个字）"));
        mCharacteristics.put(ZERO+"2a91"+UUID_TAIL, new GATT_uuidNmae("Maximum Recommended Heart Rate","推荐最大心率"));
        mCharacteristics.put(ZERO+"2A93"+UUID_TAIL, new GATT_uuidNmae("Sport Type for Aerobic and Anaerobic Thresholds","有氧阈值和无氧阈值的运动类型"));
        mCharacteristics.put(ZERO+"2A94"+UUID_TAIL, new GATT_uuidNmae("Three Zone Heart Rate Limits","三区心率限制"));
        mCharacteristics.put(ZERO+"2A95"+UUID_TAIL, new GATT_uuidNmae("Two Zone Heart Rate Limit","两区心率限制"));
        mCharacteristics.put(ZERO+"2A96"+UUID_TAIL, new GATT_uuidNmae("VO2 Max","最大摄氧量"));
        mCharacteristics.put(ZERO+"2A97"+UUID_TAIL, new GATT_uuidNmae("Waist Circumference","腰围"));
        mCharacteristics.put(ZERO+"2A98"+UUID_TAIL, new GATT_uuidNmae("Weight","重量"));
        mCharacteristics.put(ZERO+"2a99"+UUID_TAIL, new GATT_uuidNmae("Database Change Increment","数据库更改增量"));
        mCharacteristics.put(ZERO+"2a9a"+UUID_TAIL, new GATT_uuidNmae("User Index","用户索引"));
        mCharacteristics.put(ZERO+"2a9b"+UUID_TAIL, new GATT_uuidNmae("Body Composition Feature","身体组成特征"));
        mCharacteristics.put(ZERO+"2a9c"+UUID_TAIL, new GATT_uuidNmae("Body Composition Measurement","身体组成测量"));
        mCharacteristics.put(ZERO+"2a9d"+UUID_TAIL, new GATT_uuidNmae("Weight Measurement","体重测量"));
        mCharacteristics.put(ZERO+"2a9e"+UUID_TAIL, new GATT_uuidNmae("Weight Scale Feature","体重秤功能"));
        mCharacteristics.put(ZERO+"2a9f"+UUID_TAIL, new GATT_uuidNmae("User Control Point","用户控制点"));
        mCharacteristics.put(ZERO+"2aa0"+UUID_TAIL, new GATT_uuidNmae("Magnetic Flux Density – 2D","磁通密度– 2D"));
        mCharacteristics.put(ZERO+"2aa1"+UUID_TAIL, new GATT_uuidNmae("Magnetic Flux Density – 3D","磁通密度– 3D"));
        mCharacteristics.put(ZERO+"2aa2"+UUID_TAIL, new GATT_uuidNmae("Language","语言"));
        mCharacteristics.put(ZERO+"2aa3"+UUID_TAIL, new GATT_uuidNmae("Barometric Pressure Trend","气压趋势"));
        mCharacteristics.put(ZERO+"2aa4"+UUID_TAIL, new GATT_uuidNmae("Bond Management Control Point","绑定管理控制点"));
        mCharacteristics.put(ZERO+"2aa5"+UUID_TAIL, new GATT_uuidNmae("Bond Management Features","绑定管理功能"));
        mCharacteristics.put(ZERO+"2aa6"+UUID_TAIL, new GATT_uuidNmae("Central Address Resolution","中央地址解析"));
        mCharacteristics.put(ZERO+"2aa7"+UUID_TAIL, new GATT_uuidNmae("CGM Measurement","CGM测量"));
        mCharacteristics.put(ZERO+"2aa8"+UUID_TAIL, new GATT_uuidNmae("CGM Feature","CGM功能"));
        mCharacteristics.put(ZERO+"2aa9"+UUID_TAIL, new GATT_uuidNmae("CGM Status","CGM状态"));
        mCharacteristics.put(ZERO+"2aaa"+UUID_TAIL, new GATT_uuidNmae("CGM Session Start Time","CGM会话开始时间"));
        mCharacteristics.put(ZERO+"2aab"+UUID_TAIL, new GATT_uuidNmae("CGM Session Run Time","CGM会话运行时间"));
        mCharacteristics.put(ZERO+"2aac"+UUID_TAIL, new GATT_uuidNmae("CGM Specific Ops Control Point","CGM特定操作控制点"));
        mCharacteristics.put(ZERO+"2aad"+UUID_TAIL, new GATT_uuidNmae("Indoor Positioning Configuration","室内定位配置"));
        mCharacteristics.put(ZERO+"2aae"+UUID_TAIL, new GATT_uuidNmae("Latitude","纬度"));
        mCharacteristics.put(ZERO+"2aaf"+UUID_TAIL, new GATT_uuidNmae("Longitude","经度"));
        mCharacteristics.put(ZERO+"2ab0"+UUID_TAIL, new GATT_uuidNmae("Local North Coordinate","当地北部坐标"));
        mCharacteristics.put(ZERO+"2ab1"+UUID_TAIL, new GATT_uuidNmae("Local East Coordinate","当地东部坐标"));
        mCharacteristics.put(ZERO+"2ab2"+UUID_TAIL, new GATT_uuidNmae("Floor Number","楼层号"));
        mCharacteristics.put(ZERO+"2ab3"+UUID_TAIL, new GATT_uuidNmae("Altitude","海拔高度"));
        mCharacteristics.put(ZERO+"2ab4"+UUID_TAIL, new GATT_uuidNmae("Uncertainty","不确定"));
        mCharacteristics.put(ZERO+"2ab5"+UUID_TAIL, new GATT_uuidNmae("Location Name","地点名称"));
        mCharacteristics.put(ZERO+"2ab6"+UUID_TAIL, new GATT_uuidNmae("URI","URI链接"));
        mCharacteristics.put(ZERO+"2ab7"+UUID_TAIL, new GATT_uuidNmae("HTTP Headers","HTTP头"));
        mCharacteristics.put(ZERO+"2ab8"+UUID_TAIL, new GATT_uuidNmae("HTTP Status Code","HTTP状态码"));
        mCharacteristics.put(ZERO+"2ab9"+UUID_TAIL, new GATT_uuidNmae("HTTP Entity Body","HTTP实体主体"));
        mCharacteristics.put(ZERO+"2aba"+UUID_TAIL, new GATT_uuidNmae("HTTP Control Point","HTTP控制点"));
        mCharacteristics.put(ZERO+"2abb"+UUID_TAIL, new GATT_uuidNmae("HTTPS Security","HTTPS安全性"));
        mCharacteristics.put(ZERO+"2abc"+UUID_TAIL, new GATT_uuidNmae("TDS Control Point","TDS控制点"));
        mCharacteristics.put(ZERO+"2abd"+UUID_TAIL, new GATT_uuidNmae("OTS Feature","OTS功能"));
        mCharacteristics.put(ZERO+"2abe"+UUID_TAIL, new GATT_uuidNmae("Object Name","对象名称"));
        mCharacteristics.put(ZERO+"2abf"+UUID_TAIL, new GATT_uuidNmae("Object Type","对象类型"));
        mCharacteristics.put(ZERO+"2ac0"+UUID_TAIL, new GATT_uuidNmae("Object Size","对象大小"));
        mCharacteristics.put(ZERO+"2ac1"+UUID_TAIL, new GATT_uuidNmae("Object First-Created","对象首先创建"));
        mCharacteristics.put(ZERO+"2ac2"+UUID_TAIL, new GATT_uuidNmae("Object Last-Modified","上次修改的对象"));
        mCharacteristics.put(ZERO+"2ac3"+UUID_TAIL, new GATT_uuidNmae("Object ID","对象ID"));
        mCharacteristics.put(ZERO+"2ac4"+UUID_TAIL, new GATT_uuidNmae("Object Properties","对象属性"));
        mCharacteristics.put(ZERO+"2ac5"+UUID_TAIL, new GATT_uuidNmae("Object Action Control Point","对象动作控制点"));
        mCharacteristics.put(ZERO+"2ac6"+UUID_TAIL, new GATT_uuidNmae("Object List Control Point","对象列表控制点"));
        mCharacteristics.put(ZERO+"2ac7"+UUID_TAIL, new GATT_uuidNmae("Object List Filter","对象列表过滤器"));
        mCharacteristics.put(ZERO+"2ac8"+UUID_TAIL, new GATT_uuidNmae("Object Changed","对象已更改"));
        mCharacteristics.put(ZERO+"2acc"+UUID_TAIL, new GATT_uuidNmae("Fitness Machine Feature","健身设备功能"));
        mCharacteristics.put(ZERO+"2acD"+UUID_TAIL, new GATT_uuidNmae("Treadmill Data","跑步机数据"));
        mCharacteristics.put(ZERO+"2ace"+UUID_TAIL, new GATT_uuidNmae("Cross Trainer Data","交叉训练数据"));
        mCharacteristics.put(ZERO+"2acF"+UUID_TAIL, new GATT_uuidNmae("Step Climber Data","攀登者步数"));
        mCharacteristics.put(ZERO+"2ad0"+UUID_TAIL, new GATT_uuidNmae("Stair Climber Data","攀登楼梯数"));
        mCharacteristics.put(ZERO+"2ad2"+UUID_TAIL, new GATT_uuidNmae("Indoor Bike Data","室内自行车数据"));
        mCharacteristics.put(ZERO+"2ad3"+UUID_TAIL, new GATT_uuidNmae("Training Status","训练状况"));
        mCharacteristics.put(ZERO+"2ad4"+UUID_TAIL, new GATT_uuidNmae("Supported Speed Range","支持的速度范围"));
        mCharacteristics.put(ZERO+"2ad5"+UUID_TAIL, new GATT_uuidNmae("Supported Inclination Range","支持的倾斜范围"));
        mCharacteristics.put(ZERO+"2ad7"+UUID_TAIL, new GATT_uuidNmae("Supported Heart Rate Range","支持的心率范围"));
        mCharacteristics.put(ZERO+"2ad8"+UUID_TAIL, new GATT_uuidNmae("Supported Power Range","支持的功率范围"));
        mCharacteristics.put(ZERO+"2ad9"+UUID_TAIL, new GATT_uuidNmae("Fitness Machine Control Point","健身设备控制点"));
        mCharacteristics.put(ZERO+"2ada"+UUID_TAIL, new GATT_uuidNmae("Fitness Machine Status","健身设备状态"));
        mCharacteristics.put(ZERO+"2aed"+UUID_TAIL, new GATT_uuidNmae("Date UTC","UTC时间"));
        mCharacteristics.put(ZERO+"2b1d"+UUID_TAIL, new GATT_uuidNmae("RC Feature","RC功能"));
        mCharacteristics.put(ZERO+"2b1e"+UUID_TAIL, new GATT_uuidNmae("RC Settings","RC设置"));
        mCharacteristics.put(ZERO+"2b1f"+UUID_TAIL, new GATT_uuidNmae("Reconnection Configuration Control Point","重新连接配置控制点"));
        mCharacteristics.put(ZERO+"2b20"+UUID_TAIL, new GATT_uuidNmae("IDD Status Changed","IDD状态已更改"));
        mCharacteristics.put(ZERO+"2b21"+UUID_TAIL, new GATT_uuidNmae("IDD Status","IDD状态"));
        mCharacteristics.put(ZERO+"2b22"+UUID_TAIL, new GATT_uuidNmae("IDD Annunciation Status","IDD通告状态"));
        mCharacteristics.put(ZERO+"2b23"+UUID_TAIL, new GATT_uuidNmae("IDD Features","IDD功能"));
        mCharacteristics.put(ZERO+"2b24"+UUID_TAIL, new GATT_uuidNmae("IDD Status Reader Control Point","IDD状态读取器控制点"));
        mCharacteristics.put(ZERO+"2b25"+UUID_TAIL, new GATT_uuidNmae("IDD Command Control Point","IDD命令控制点"));
        mCharacteristics.put(ZERO+"2b26"+UUID_TAIL, new GATT_uuidNmae("IDD Command Data","IDD命令数据"));
        mCharacteristics.put(ZERO+"2b27"+UUID_TAIL, new GATT_uuidNmae("IDD Record Access Control Point","IDD记录访问控制点"));
        mCharacteristics.put(ZERO+"2b28"+UUID_TAIL, new GATT_uuidNmae("IDD History Data","IDD历史数据"));
        mCharacteristics.put(ZERO+"2b2b"+UUID_TAIL, new GATT_uuidNmae("BSS Control Point","BSS控制点"));
        mCharacteristics.put(ZERO+"2b2c"+UUID_TAIL, new GATT_uuidNmae("BSS Response","BSS回应"));
        mCharacteristics.put(ZERO+"2b2d"+UUID_TAIL, new GATT_uuidNmae("Emergency ID","突发事件ID"));
        mCharacteristics.put(ZERO+"2b2e"+UUID_TAIL, new GATT_uuidNmae("Emergency Text","突发事件内容"));
    }
}
